package Componentes;

import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

import Graficos.ComponenteGrafico;

/**
 * ProyectoX TDP 2011
 * @author  Ma Gimena Ramos- LU:82716
 * @autor Brenda Dilschneider- LU: 92774
 *
 */

public class Castillo extends Componente implements Runnable{
	private int contador;
	private Thread hilo;
	private boolean bajo;
	
	/**
	 * constructor
	 */
	public Castillo(){
		hilo=new Thread(this);
	}

	/**
	 * clona el objeto y devuelve un objeto de tipo Castillo
	 */
	public Object clonar()
	{
		Castillo v = new Castillo();

	ComponenteGrafico c=  new ComponenteGrafico(new ImageIcon(getClass().getClassLoader().getResource("Dibujos/Goblo.png")),95,147);
		
		v.setGrafico(c);
		
		return v;
	}

	/**
	 * deja al mario quieto 
	 */
	@Override
	public void chocarMario() {
					mario.goQuieto(); 
			}

	/**
	 * inicializa variables para poder inicializar el hilo del objeto
	 */
	@Override
	public void arrancarHilo() {
		bajo=false;
		mario.setIcon(null);
		contador=0;
	hilo.start();
		
	}

	/**
	 * llama al metodo chocarMario()
	 */
	@Override
	public void pisadoPorMario() {
		chocarMario();
		
	}

/**
 * para el hilo del objeto y le asigna nulo a la imagen del personaje
 */
	@Override
	public void destruirHilo() {
	hilo.stop();
	mario.setIcon(null);
	}

	/**
	 * metodo abstracto de la clase Componente redefinido sin uso
	 */
	@Override
	public void serChocado() {
			}
	/**
	 * metodo abstracto de la clase Componente redefinido sin uso
	 */
	@Override
	public void serChocado(Componente c) {
}

	/**
	 * baja el globo hasta donde se encuentra mario, sube y  avisa que termina el nivel.
	 */
	@Override
	public void run() {
	
		while (contador<=48){
			if (!bajo){
	
			this.comp.setLocation(this.comp.getLocation().x, this.comp.getLocation().y+1);
			contador++;
					}
		
		else{
		
			this.comp.setLocation(this.comp.getLocation().x, this.comp.getLocation().y-2);
			contador++;
	
		}
			try {
				hilo.sleep(100);
			} catch (InterruptedException e) {
			
				e.printStackTrace();
			}
		
			if (contador==48){
				if (!bajo){
					
			
				bajo=true;
				if (mario.obtenerPersonaje()==0)
				 this.comp.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Dibujos/GloboM.gif")));
				else
				  this.comp.setIcon(new ImageIcon(getClass().getClassLoader().getResource("Dibujos/GloboL.gif")));
				contador=0;
				mario.setLocation(-50,-50);
				
				}else
			{  	JOptionPane dialogo= new JOptionPane();
			dialogo.showMessageDialog (null, "Ha  ganado la partida!!! su puntuacion final es de: "+ mario.obtenerPartida().getPuntaje(), "Felicitaciones!!!", JOptionPane.WARNING_MESSAGE);
			
			

				this.destruirHilo();
				
			}}
			}
		

	
}}



